package com.innerclass;

//匿名内部类

public class AnonymousInnerClass {
    public static void main(String[] args) {

        Outer04 outer04 = new Outer04();
        outer04.method();

    }
}

class Outer04{//外部类
    private int n1 = 1;//属性
    public void method(){//方法
        //基于接口的匿名内部类
        //1.需求：想使用IA接口，并创建对象
        //2.传统方式：写一个类，实现该接口，并创建对象
        //3.仅使用一次，可使用匿名内部类简化
        //tiger的编译类型 IA
        //tiger的运行类型 匿名内部类

        IA tiger = new IA(){
            @Override
            public void cry() {
                System.out.println("老虎叫唤");
            }
        };
        tiger.cry();

        //基于类的匿名内部类
        //1.father编译类型 Father
        //2.father运行类型 匿名内部类
        //"jack"会传递给Father构造器
        Father father = new Father("jack"){

            @Override
            public void test() {
                System.out.println("匿名内部类重写了test方法");
            }
        };
        father.test();

    }
}
interface IA{//接口
    public void cry();
}
class Father{
    public Father(String name){//构造器
    }
    public void test(){//方法

    }
}


